home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 10 / 9 / DISK1095.ZIP / EXTRA.PRG < prev    next >
Text File  |  1980-01-01  |  5KB  |  150 lines

  1. *==================================END MODS==================================*
  2. *
  3. * DISPLAY VARIABLE DATA IN SCREEN HEADING
  4.    IF DELETE()
  5.       @ 5,1 SAY "* DELETED *"
  6.    ELSE
  7.       @ 5,1 SAY "           "
  8.    ENDIF
  9. * IDENTIFY RECORD
  10.    @ 5,62 SAY RECCNT
  11.    @ 5,50 SAY RECNO()
  12.    @ 5,43 SAY "Record"
  13.    @ 5,61 SAY "of"
  14. * IF DATAIN FLAG SET, ACTIVATE THE GETS
  15.    IF DATAIN="Y"
  16.       @ 19,72 GET ACTION
  17.       READ
  18. * DATE STAMP RECORD
  19.       REPLACE LAST_UPDT WITH DATE()
  20.       IF REQUEST="E".OR.ACTION<>"C"
  21.          STORE "N" TO DATAIN
  22.          STORE " " TO REQUEST
  23.          STORE " " TO ACTION
  24.       ENDIF 2
  25.    ELSE
  26.       CLEAR GETS
  27.    ENDIF 1
  28. *
  29. * DISPLAY CONTROL SUBMENU, CURRENT ACTIVE INDEX
  30.    @ 19,0 SAY BLANK
  31.    @ 20,0 SAY "----------------------------------------"
  32.    @ 20,40 SAY "----------------------------------------"
  33.    @ 21,0 CLEAR
  34.    @ 21,2 SAY ;
  35. "<F>ind Record  <A>dd Record   <D>elete/Recall  <E>dit Record   Current Active"
  36.    @ 22,2 SAY ;
  37. "<P>rev Record  <N>ext Record  <M>enu (return)  <K>ey Select    Key:          "
  38. * IF INDEX SET NAMED IN LIVE_IX HAS MULTIPLE ENTRIES, EXTRACT FIRST
  39.    IF (","$&LIVE_IX)
  40.       STORE SUBSTR(&LIVE_IX,1,AT(",",&LIVE_IX)-1) TO TEMP
  41.       @ 22,70 SAY TEMP
  42.    ELSE
  43.       @ 22,70 SAY &LIVE_IX
  44.    ENDIF
  45. * GET REQUEST AND FORCE TO UPPER CASE UNLESS ALREADY IN 'A' FOR ADD RECORDS
  46.    IF REQUEST<>"A"
  47.       STORE " " TO REQUEST
  48.       STORE " " TO ACTION
  49.       @ 23,10 SAY "          *** NEXT ACTION TO PERFORM " GET REQUEST
  50.       READ
  51.       STORE UPPER(REQUEST) TO REQUEST
  52.    ENDIF
  53. * CLEAR ADD RECORD COMMAND LINE, SUBMENU AREA
  54.    @ 21,0 CLEAR
  55.    DO CASE
  56. * ADD NEW CASE OR EDIT DISPLAYED CASE
  57.       CASE REQUEST="A".OR.REQUEST="E"
  58. * IN ADD MODE, APPEND A BLANK RECORD FOR THE DATA AND POSITION TO THAT RECORD
  59.          IF REQUEST="A"
  60.             @ 19,6 SAY "*** PRESS 'C' TO CONTINUE ADDING NEW RECS, ANYTHING ;
  61. ELSE TO QUIT"
  62.             APPEND BLANK
  63.             STORE RECCNT+1 TO RECCNT
  64.             GO RECCNT
  65.          ELSE
  66.             @ 19,6 SAY "******** PRESS ANY KEY TO FINISH EDIT AND RETURN TO ;
  67. SUBMENU     "
  68.          ENDIF
  69.          @ 21,10 SAY "Enter data at cursor position. Move among fields with"
  70.          @ 22,10 SAY "cursor control keys. Press ENTER to move to next field."
  71.          @ 23,10 SAY "Press ENTER alone to leave field unchanged."
  72. * SET FLAG TO CAUSE NEW DATA TO BE READ
  73.          STORE "Y" TO DATAIN
  74. * TOGGLE DELETE FLAG. * FUNCTION CHECKS IF RECORD NOW FLAGGED AS DELETED
  75.       CASE REQUEST="D"
  76.          IF DELETE()
  77.             RECALL
  78.          ELSE
  79.             DELETE
  80.          ENDIF
  81. * PREVIOUS RECORD IN ACTIVE INDEX SEQUENCE
  82.       CASE REQUEST="P"
  83.          SKIP -1
  84. * NEXT 3 LINES TO SECURE THE BACKWARD LOOP
  85.          IF BOF()
  86.             GO BOTTOM
  87.          ENDIF
  88. * NEXT RECORD IN ACTIVE INDEX SEQUENCE
  89.       CASE REQUEST="N"
  90.          SKIP +1
  91. * NEXT 3 LINES TO SECURE THE FORWARD LOOP
  92.          IF EOF()
  93.             GO TOP
  94.          ENDIF
  95. * GET SEARCH VALUE FOR INDEXED SEARCH
  96.       CASE REQUEST="F"
  97. * USE MACRO DEFINING INDEX ENTRIES FROM DATA FIELDS
  98.          STORE "DI"+LIVE_IX TO IXDEF
  99.          STORE &IXDEF TO SV
  100.          STORE &SV TO SV
  101.          @ 21,1 SAY ;
  102.          "ENTER SEARCH VALUE. VALUE SHOWN IS FROM THE DISPLAYED RECORD. PRESS"
  103.          @ 22,1 SAY "CTRL-Y TO CLEAR " GET SV
  104.          READ
  105. * REMOVE TRAILING BLANKS BEFORE SEARCH
  106.          STORE TRIM(SV) TO SEARCH
  107. * IF RECORD IS NOT FOUND DISPLAY STAYS AT CURRENT RECORD
  108. * NEXT LINE TO KEEP TRACK OF CURRENT RECNO() FOR TEST BELOW
  109.          STORE RECNO() TO NOW
  110.          SEEK SEARCH
  111. * NEXT 3 LINES KEEP PRESENT RECORD DISPLAYED IF NO FIND
  112.          IF EOF()
  113.             GOTO NOW
  114.          ENDIF
  115. * CHANGE INDEX
  116.       CASE REQUEST="K"
  117.          STORE RECNO() TO RECNOW
  118.          STORE " " TO IXCHOICE
  119. * SETUP MENU OF INDEX NAMES, PROVIDE IF CLAUSE FOR EACH INDEX                *
  120.          @ 21,9 SAY " "
  121.          STORE 1 TO COUNT
  122.          DO WHILE COUNT<=IXCOUNT
  123.             STORE "IX"+CHR(64+COUNT) TO TEMP
  124.             IF IXCOUNT>1
  125.                ?? CHR(64+COUNT)+". "+SUBSTR(&TEMP,1,AT(",",&TEMP)-1)+" "
  126.             ELSE
  127.                ?? CHR(64+COUNT)+". "+&TEMP
  128.             ENDIF
  129.             STORE COUNT+1 TO COUNT
  130.          ENDDO
  131.          @ 22,10 SAY "Press letter of desired key " GET IXCHOICE
  132.          READ
  133.          STORE UPPER(IXCHOICE) TO IXCHOICE
  134.          IF IXCHOICE>="A".AND.IXCHOICE<=CHR(64+IXCOUNT)
  135.             STORE "IX"+IXCHOICE TO LIVE_IX
  136.             STORE &LIVE_IX TO TEMP
  137.             SET INDEX TO &TEMP
  138.          ENDIF
  139. * GOTO THIS RECORD TO ACTIVATE INDEX
  140.          IF RECNOW>0
  141.             GO RECNOW
  142.          ELSE
  143.             GO BOTTOM
  144.          ENDIF
  145.    ENDCASE
  146. ENDDO
  147. * FALL OUT OF DO WHEN 'M' IS REQUEST, RETURN TO SUBSYSTEM'S MENU
  148. CLEAR
  149. RETURN
  150.